package design.graduation.novelsystem.service;

import com.baomidou.mybatisplus.extension.service.IService;
import design.graduation.novelsystem.model.domian.Admin;
import design.graduation.novelsystem.model.dto.DataGridView;
import design.graduation.novelsystem.model.vo.AdminVo;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

/**
 * @author: 洪少尉
 * @Date: 2020/4/13 23:41
 * @Description: 
 */
public interface AdminService extends IService<Admin>{

    /**
     * 后台管理登录
     * @param loginName 登录名
     * @param password 登录密码
     * @param request 请求信息
     * @return token和管理员名称
     */
    Map<String,String> doLogin(String loginName, String password, HttpServletRequest request);

    /**
     * 通过登录名查找管理员
     * @param loginName 登录名
     * @return 当前管理员
     */
    Admin findByUserName(String loginName);

	/**
	 * 查询管理员表单数据
	 * @param adminVo 查询条件
	 * @return 管理员表单数据
	 */
	DataGridView queryAllAdmin(AdminVo adminVo);

	/**
	 * 添加管理员
	 * @param admin 管理员信息
	 * @return true/false
	 */
	boolean saveAdmin(Admin admin);

	/**
	 * 更新管理员信息
	 * @param admin 管理员信息
	 * @return true/false
	 */
	boolean updateAdmin(Admin admin);

	/**
	 * 重置管理员密码
	 * @param id  管理员id
	 * @return true/false
	 */
	boolean resetAdminPassword(Integer id);

	/**
	 * 保存管理员和角色之间的关系
	 * @param aid 管理员id
	 * @param rids 角色id集合
	 * @return true/false
	 */
	boolean saveAdminRole(Integer aid, Integer[] rids);

	/**
	 * 当前管理员排序码的最大值
	 * @return Integer
	 */
	Integer queryAdminMaxSortCode();

	/**
	 * 通过管理员id删除管理员
	 * @param id 管理员id
	 * @return boolean
	 */
	boolean removeAdminById(Integer id);

	/**
	 * 上传用户头像，更新数据库
	 * @param mf 头像
	 * @return  Map<String,String>
	 */
	Map<String,String> updateAdminHeadImage(MultipartFile mf);

	/**
	 * 判断当前密码
	 * @param password 管理员原密码
	 * @return boolean
	 */
	boolean checkPassword(String password);
}
